// 聊天相关类型
export interface ChatMessage {
  id: string;
  username: string;
  message: string;
  timestamp: string;
  isSystem?: boolean;
}

export interface ChatUser {
  id: string;
  username: string;
  isOnline: boolean;
  joinedAt: string;
}

// 扩展 WebSocket 事件以包含聊天功能
export interface ChatWebSocketEvents {
  // Client -> Server
  join_chat: { username: string };
  send_message: { message: string };
  leave_chat: Record<string, never>;
  
  // Server -> Client
  user_joined: { user: ChatUser; timestamp: string };
  user_left: { user: ChatUser; timestamp: string };
  new_message: { message: ChatMessage; timestamp: string };
  chat_history: { messages: ChatMessage[]; timestamp: string };
  online_users: { users: ChatUser[]; timestamp: string };
  username_taken: { message: string };
}

// 世界名著中的英文名字
export const FAMOUS_NAMES = [
  // 英国文学
  'Elizabeth', 'Darcy', 'Jane', 'Rochester', 'Emma', 'Knightley', 'Catherine', 'Heathcliff',
  'Sherlock', 'Watson', 'Oliver', 'Pip', 'Scrooge', 'Hamlet', 'Ophelia', 'Romeo', 'Juliet',
  
  // 美国文学
  'Gatsby', 'Daisy', 'Tom', 'Nick', 'Scout', 'Atticus', 'Holden', 'Phoebe', 'Huckleberry',
  'Jim', 'Buck', 'Lily', 'George', 'Lennie', 'Curley', 'Slim',
  
  // 法国文学
  'Valjean', 'Javert', 'Cosette', 'Marius', 'Eponine', 'Gavroche', 'Dantes', 'Mercedes',
  'Fernand', 'Danglars', 'Villefort', 'Haydee', 'Valentine', 'Maximilian',
  
  // 俄国文学
  'Pierre', 'Natasha', 'Andrei', 'Sonya', 'Nicholas', 'Marya', 'Rostov', 'Bolkonsky',
  'Anna', 'Vronsky', 'Karenin', 'Kitty', 'Levin', 'Oblonsky', 'Dolly', 'Stiva',
  'Raskolnikov', 'Sonia', 'Porfiry', 'Dunya', 'Razumikhin', 'Marmeladov',
  
  // 德国文学
  'Faust', 'Mephistopheles', 'Gretchen', 'Wilhelm', 'Charlotte', 'Werther', 'Hans', 'Castorp',
  
  // 意大利文学
  'Dante', 'Beatrice', 'Virgil', 'Paolo', 'Francesca', 'Ugolino',
  
  // 西班牙文学
  'Quixote', 'Sancho', 'Dulcinea', 'Rocinante', 'Alonso',
  
  // 古典文学
  'Odysseus', 'Penelope', 'Telemachus', 'Circe', 'Athena', 'Achilles', 'Hector', 'Paris',
  'Helen', 'Agamemnon', 'Clytemnestra', 'Orestes', 'Electra', 'Antigone', 'Creon', 'Ismene',
  
  // 其他经典角色
  'Alice', 'Hatter', 'Cheshire', 'Rabbit', 'Queen', 'Duchess', 'Gryphon', 'Mock',
  'Robinson', 'Crusoe', 'Friday', 'Gulliver', 'Lilliput', 'Brobdingnag',
  'Jekyll', 'Hyde', 'Utterson', 'Lanyon', 'Poole'
];

// 生成随机用户名
export const generateRandomUsername = (): string => {
  const randomName = FAMOUS_NAMES[Math.floor(Math.random() * FAMOUS_NAMES.length)];
  const randomNumber = Math.floor(Math.random() * 9999);
  return `${randomName}${randomNumber.toString().padStart(4, '0')}`;
};
